現在我們已經了解JSON格式了!
馬上就來實作一個小功能吧!
function doPost(e){
var estringa = JSON.parse(e.postData.contents);
var payload = start(estringa);
var data = {
"method": "post",
"payload": payload
}
UrlFetchApp.fetch("https://api.telegram.org/bot你機器人的token/", data);
}
function start(estringa){
var id = "你的id"
var payload;
if (estringa.message.text){
payload = {
"method": "sendMessage",
"chat_id": id,
"text": estringa.message.text,
}
}
else if (estringa.message.sticker){
payload = {
"method": "sendSticker",
"chat_id": id,
"sticker": estringa.message.sticker.file_id
}
}
else if (estringa.message.photo){
array = estringa.message.photo;
text = array[1];
payload = {
"method": "sendPhoto",
"chat_id": id,
"photo": text.file_id
}
}
else {
payload = {
"method": "sendMessage",
"chat_id": id,
"text": "Try other stuff"
}
}
return payload
}
第3行:將資料轉為JSON格式儲存。
第5行:把payload
設為執行start(estringa)
方法。
第6行:傳送訊息方法設為POST
,內容為payload
。
第11行:fetch至Telegram Bot並傳送data
。
第14行:將我們的ID設為id儲存。
第17-47行:判斷接受的訊息內容為文字、貼圖或照片,來決定回傳的訊息。
第18行:返回程式碼上層,重複執行判斷。
程式碼完成後,一樣部屬,就可以到Telegram來測試機器人是否會傳送一樣的訊息回來。
我在測試時有發現如果傳送的照片檔案太小(10幾KB),就不會有回聲效果。
這部分我不太清楚為什麼會這樣,如果有人知道歡迎告訴我原因或解決辦法~
以上就是一個簡單的回聲機器人製作,運用了簡單的if判斷式,就可以完成這樣的效果,還蠻有趣的!
之後幾篇會特別在針對特定訊息回覆這塊多做說明!
抱歉想問一下
因為一直無法讓機器人回應
var id = "你的id"
這邊是指輸入機器人ID? 還是使用者ID? 還是什麼ID?
以及使用者ID的話
我嘗試用您Day18 所取得的 發送者ID 去填入,還是無反應
有點卡關了 哈哈 再請幫忙解惑 感謝
這邊指的是使用者的ID喔!
會不會是SetWebhook設定有問題呢?
或是把數字當成字串處理了?
也許你可以看一下參考資料的步驟來操作看看。
下面這個網址講的也很詳細,我有些地方也是參考他的,你也可以試試。
Telegram bot 機器人製作教學
把var id = "你的id"
這邊的雙引號拿掉試試看
改成var id = 你的id
想請問一下執行後會出現這個錯誤該如何解決
TypeError: Cannot read property 'postData' of undefined
如果直接部屬telegram也沒有反應
謝謝~
您好,
會出現這樣子的問題代表在儲存資料時出了問題,
很可能是在前面SetWebhook時有錯誤。
你可以看一下我第18天的文章檢查一下設定有沒有錯,
然後試試看更新你部屬的url,
還有確認一下機器人的token是否正確。
好的,謝謝
我再試看看~